#include <stdio.h>


//以下四个测试程序测试指针的使用
//
//
//
//*********程序1**********************
int* test(int* a){
	int b=7;
	a=&b;
	return a;
}
int main(void){
	int c=9;
	int* a=&c;
	printf("%d\n",*a);
	a=test(a);
	printf("%d",*a);
}
//***************程序2******************************
//
//
//
//
void test(int* a){
	int b=7;
	a=&b;
}
int main(void){
	int c=9;
	int* a=&c;
	printf("%d\n",*a);
	test(a);
	printf("%d",*a);
}


//************程序3*********************************
//
//
//
//

int* test(int** a){
	int b=7;
	*a=&b;
}
int main(void){
	int c=9;
	int* a=&c;
	printf("%d\n",*a);
	a=test(&a);
	printf("%d",*a);
}

//*************程序4********************************
int* test(int* a){
	int b=7;
	*a=b;
}
int main(void){
	int c=9;
	int* a=&c;
	printf("%d\n",*a);
	a=test(a);
	printf("%d",*a);
}


//由于函数内部定义的变量为局部变量，函数结束后即被释放；
//以指针形式传递参数实际上是复制了指针的一个副本，实际也算值传递，必须解引用才能修改到指针所指变量，也就是程序2不起作用的原因；
//故前三种办法无论能否达到效果都是错误的，b变量被释放以后，它的内存空间即可被程序的其他部分使用，即可意想不到的修改了变量a得值
//以二重指针的形式传递指针固然能“达到”效果，然而局部变量的释放依然是让人触不及防的事情；
